package com.wyh.common.utils.uuid;


import java.util.concurrent.atomic.AtomicLong;

/**
 * ID生成器工具类
 * 
 * @author ruoyi
 */
public class IdUtils
{

    private static final AtomicLong sequence = new AtomicLong(0);
    /**
     * 获取随机UUID
     * 
     * @return 随机UUID
     */
    public static String randomUUID()
    {
        return UUID.randomUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线
     * 
     * @return 简化的UUID，去掉了横线
     */
    public static String simpleUUID()
    {
        return UUID.randomUUID().toString(true);
    }

    /**
     * 获取随机UUID，使用性能更好的ThreadLocalRandom生成UUID
     * 
     * @return 随机UUID
     */
    public static String fastUUID()
    {
        return UUID.fastUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线，使用性能更好的ThreadLocalRandom生成UUID
     * 
     * @return 简化的UUID，去掉了横线
     */
    public static String fastSimpleUUID()
    {
        return UUID.fastUUID().toString(true);
    }

    public static synchronized String generateUniqueNumber() {
        // 获取当前时间戳
        long timestamp = System.currentTimeMillis();
        // 添加序列，确保在同一毫秒内生成的数字串也是唯一的
        long seq = sequence.incrementAndGet();
        // 将时间戳和序列转换为字符串，并拼接起来
        return String.format("%d%012d", timestamp, seq);
    }
}
